#!/bin/sh -e
#
#    services: show what services are running on this server (configurable)
#
#    Copyright (C) 2009 Canonical Ltd.
#    Copyright (C) 2011 Dustin Kirkland
#
#    Authors: Dustin Kirkland <kirkland@byobu.co>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

__services_detail() {
	return
}

service_running() {
	if [ -f "/etc/init/$1.conf" ]; then
		# Use upstart
		case "$(status $1 2>/dev/null)" in
			*running*)
				true
			;;
			*)
				false
			;;
		esac
	elif [ -f "/etc/init.d/$1" ]; then
		# Fall back to sysvinit
		/etc/init.d/$1 status >/dev/null 2>&1
	else
		false
	fi
}

__services() {
	local services=
	# Users can define a list of services to monitor in $BYOBU_CONFIG_DIR/status
	if [ -z "$services" ]; then
		if [ -f "/etc/eucalyptus/eucalyptus.conf" ]; then
			# If the user has not defined any services, but this system is a
			# UEC system, default to the list of Ubuntu Enterprise Cloud Services
			services="eucalyptus-cloud|CLC eucalyptus-walrus|WC eucalyptus-cc|CC eucalyptus-sc|SC eucalyptus-nc|NC"
		fi
	fi
	output=
	for i in $services; do
		service=${i%|*}
		nick=${i#*|}
		case "$service" in
			eucalyptus-nc)
				if service_running $service; then
					# This is a node controller, determine VM usage
					. /etc/eucalyptus/eucalyptus.conf
					count=$(pgrep -c -f /usr/bin/kvm || true)
					output="$output,NC:$count"
				fi
			;;
			*)
				service_running $service && output="$output,$nick"
			;;
		esac
	done
	[ -n "$output" ] || return
	color w c; printf "%s" ${output#,}; color --
}

# vi: syntax=sh ts=4 noexpandtab
